<?php
//水印处理类
class Water{

	//水印图片
	public $waterImg='logo.png';

	//位置 1 左上 ... 5 中间 6 中右  ..9 右下
	public $pos=9; 

	//透明度
	public $pct=80;

	public function __construct(){}

	public function water($file)
	{	
		//根据传入的文件名产生图片资源
		$img =$this->getImageRes($file);

		//生成水印图片资源
		$logo = $this->getImageRes($this->waterImg);
		// 算出来，水印位置
		$pos = $this->getPos($img,$logo);
		// 获得logo图片的信息
		$logoInfo = getimagesize($this->waterImg);
		
		print_r($logoInfo);


		if($logoInfo[2]==3)
		{

			//图片是png类型使用copy
			imagecopy($img, $logo, $pos[0], $pos[1],
			0, 0, imagesx($logo), imagesy($logo));
		}	
		else
		{	//图片是jpeg的加透明
			$a = imagecopymerge($img, $logo, $pos[0], $pos[1],
			0, 0, imagesx($logo), imagesy($logo),$this->pct);
		}
		
		
		
		$imgInfo =getimagesize($file);
		print_r($imgInfo);
		//通过 str_replace 把'/'替换过成空格 
		$func = str_replace('/', '', $imgInfo['mime']);
		// print_r($func);
		 return $func($img,$file);


	}


	//根据传入的文件名产生图片资源
	private function getImageRes($file)
	{	//索引mime给出的是图像的MIME信息，此信息可以用来在 HTTP Content-type 头信息中发送正确的信息
		$info = getimagesize($file);
		print_r($info);
		$type = explode('/',$info['mime']);
		print_r($type);
		//生成图片的PHP函数
		$func= 'imagecreatefrom'.$type[1];
		// imagecreatefrompng(filename)
		//使用变量函数的特性产生图像资源
		return $func($file);
	}

	//算出来，水印位置
	private function getPos($img,$logo)
	{
		$img_w = imagesx($img);
		$img_h = imagesy($img);
		$logo_w = imagesx($logo);
		$logo_h = imagesy($logo);
		//设置默认位置
		$x=$y=20;
		switch($this->pos)
		{
			case 1:
				break;
			case 2:
				$x = ($img_w-$logo_w)/2;
				break;
			case 3:
				$x = $img_w-$logo_w-20;
				break;
			case 4:
				$y = ($img_h-$logo_h)/2;
				break;
			case 5:
				$x = ($img_w-$logo_w)/2;
				$y = ($img_h-$logo_h)/2;
				break;
			case 6:
				$x = $img_w-$logo_w-20;
				$y = ($img_h-$logo_h)/2;
				break;
			case 7:
				$y = $img_h-$logo_h-20;
				break;
			case 8:
				$x = ($img_w-$logo_w)/2;
				$y = $img_h-$logo_h-20;
				break;
			default:
				$x = $img_w-$logo_w-20;
				$y = $img_h-$logo_h-20;
		}
		return array($x,$y);
	}
}













